package com.mycode.singleton01;

import java.util.Objects;

/**
 * 该类用来模拟实现Windows任务管理器，创建任务管理类需要唯一性
 */
public class TaskManager {

    // 唯一实例
    private static TaskManager taskManager = null;

    // 初始化窗口
    private TaskManager() {
        System.out.println("任务管理器启动");
    }

    // 实例化
    public static TaskManager getInstance() {
        if (Objects.isNull(taskManager)) {
            /*
            在多线程环境中，如果有一个线程在此处交出时间片控制，另一个线程进来依旧满足 上面 taskManager == null，会创建 TaskManager 实例化
            当先前交出时间片控制的线程，会在此处环境，也会创建一个 TaskManager 实例化对象，这样两个线程得到的 taskManager 实例化对象就不是同一个了
            为了解决上述问题引出了两种创建方式：饿汉式和懒汉式
             */

            // 自行实例化
            taskManager = new TaskManager();
        }
        return taskManager;
    }

    // 显示进程
    public void displayProcesses() {
        System.out.println("进程列表：");
    }

    // 显示服务
    public void displayServicess() {
        System.out.println("服务列表：");
    }


}
